package cn.lzy.demo;

import cn.lzy.demo.entity.User;
import org.springframework.beans.MutablePropertyValues;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.beans.factory.support.GenericBeanDefinition;

/**
 * @Description DefaultListableBeanFactory容器用法：通过Java方式读取bean
 * @Author lzy
 * @Date 2024/3/8 14:35
 * @Version
 **/
public class DefaultListableFactoryBeanOfJavaDemo {

    public static void main(String[] args) {
        DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
        // 创建一个 BeanDefinition：我们通过 XML 文件或者 Java 注解配置的 Bean，最终都会被解析为一个 BeanDefinition 对象，然后再将这个 BeanDefinition 对象进行实例化
        GenericBeanDefinition beanDefinition = new GenericBeanDefinition();
        // 设置类
        beanDefinition.setBeanClass(User.class);
        // 设置 Bean 的属性
        MutablePropertyValues propertyValues = new MutablePropertyValues();
        propertyValues.add("name", "小黑");
        propertyValues.add("address", "中山");
        beanDefinition.setPropertyValues(propertyValues);
        // 向容器中注册一个 bean
        beanFactory.registerBeanDefinition("user1", beanDefinition);

        User user = beanFactory.getBean("user1", User.class);
        System.out.println(user);
    }
}
